﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using MyAlbum.Model;
//using MyAlbum.Data;
//using PersonalAlbum.Caching;

//namespace MyAlbum.Services.Caching
//{
//    public class CachedDataService<T>:IDataService<T>
//    {
//        private IDataService<T> _service;
//        private ICacheService _cache;
//        private string _cacheKey;
//        public CachedDataService(IDataService<T> service, ICacheService cacheService)
//        {
//            if (service == null)
//            {
//                throw new ArgumentNullException("service");
//            }
//            if (cacheService == null)
//            {
//                throw new ArgumentNullException("cacheService");
//            }
//            this._cache = cacheService;
//            this._cacheKey = typeof(T).Name + "s";
//            this._service = service;
//        }
      

//        #region IDataService<T> Members

//        public IEnumerable<T> GetItems()
//        {
//            var albums = this._cache.GetData(this._cacheKey) as IEnumerable<T>;
//            if (albums == null)
//            {
//                albums = this._service.GetItems();
//                this._cache.InsertData(this._cacheKey, albums);
//            }
//            return albums;
//        }

//        public void AddItem(T item)
//        {
//            this._service.AddItem(item);
//            this._cache.RemoveItem(this._cacheKey);
//        }

//        public void DeleteItem(T item)
//        {
//            this._service.DeleteItem(item);
//            this._cache.RemoveItem(this._cacheKey);
//        }

//        public void UpdateItem(T item)
//        {
//            this._service.UpdateItem(item);
//            this._cache.RemoveItem(this._cacheKey);
//        }

//        #endregion
//    }
//}
